package _08;

import java.util.*;
import java.util.Scanner;

/*
问题描述
　　小明有一块空地，他将这块空地划分为 n 行 m 列的小块，每行和每列的长度都为 1。
　　小明选了其中的一些小块空地，种上了草，其他小块仍然保持是空地。
　　这些草长得很快，每个月，草都会向外长出一些，如果一个小块种了草，
    则它将向自己的上、下、左、右四小块空地扩展，这四小块空地都将变为有草的小块。
　　请告诉小明，k 个月后空地上哪些地方有草。
输入格式
　　输入的第一行包含两个整数 n, m。
　　接下来 n 行，每行包含 m 个字母，表示初始的空地状态，字母之间没有空格。如果为小数点，表示为空地，如果字母为 g，表示种了草。
　　接下来包含一个整数 k。
输出格式
　　输出 n 行，每行包含 m 个字母，表示 k 个月后空地的状态。如果为小数点，表示为空地，如果字母为 g，表示长了草。
样例输入
4 5
.g...
.....
..g..
.....
2
样例输出
gggg.
gggg.
ggggg
.ggg.
评测用例规模与约定
　　对于 30% 的评测用例，2 <= n, m <= 20。
　　对于 70% 的评测用例，2 <= n, m <= 100。
　　对于所有评测用例，2 <= n, m <= 1000，1 <= k <= 1000。
*/
//n 行 m 列的小块，每行和每列的长度都为 1。
//向自己的上、下、左、右四小块空地扩展
//k 个月后空地上哪些地方有草。
import java.util.Scanner;

public class _08 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int m = sc.nextInt();
        String[] map = new String[n + 1];
        for (int i = 0; i < n; i++) {
            map[i] = sc.next();    //输入地图
        }
        int month = sc.nextInt();        //输入月份

        char[][] p = new char[n][m];    //将地图转为二维数组p[n][m];
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < m; j++) {
                p[i][j] = map[i].charAt(j);
            }
        }

        char[][] p2 = new char[n][m];    //暂时存放
        for (int t = 0; t < month; t++) {
            for (int i = 0; i < n; i++) {
                for (int j = 0; j < m; j++) {
                    if (p[i][j] == 'g') {
                        p2[i][j] = 'g';
                        if (i - 1 >= 0) p2[i - 1][j] = 'g';
                        if (i + 1 < n) p2[i + 1][j] = 'g';
                        if (j - 1 >= 0) p2[i][j - 1] = 'g';
                        if (j + 1 < m) p2[i][j + 1] = 'g';
                    }
                }
            }
            for (int i = 0; i < n; i++) {
                for (int j = 0; j < m; j++) {
                    p[i][j] = p2[i][j];
                }
            }
        }
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < m; j++) {
                if (p[i][j] == 'g') System.out.print(p[i][j]);
                else System.out.print(".");
            }
            System.out.println();
        }
        sc.close();
    }
}
